home *** CD-ROM | disk | FTP | other *** search
/ Aminet 2 / Aminet AMIGA CDROM (1994)(Walnut Creek)[Feb 1994][W.O. 44790-1].iso / Aminet / mus / play / tracker_3_19.lzh / tracker / channel.h < prev    next >
C/C++ Source or Header  |  1993-11-17  |  4KB  |  129 lines

  1. /* channel.h */
  2.  
  3. /* $Id: channel.h,v 3.9 1993/11/17 15:31:16 espie Exp espie $
  4.  * $Log: channel.h,v $
  5.  * Revision 3.9  1993/11/17  15:31:16  espie
  6.  * audio_channel private.
  7.  *
  8.  * Revision 3.8  1993/11/11  20:00:03  espie
  9.  * Amiga support.
  10.  *
  11.  * Revision 3.7  1993/07/18  10:39:44  espie
  12.  * Cleaned up.
  13.  *
  14.  * Revision 3.6  1993/05/19  11:26:39  espie
  15.  * *** empty log message ***
  16.  *
  17.  * Revision 3.5  1992/11/27  10:29:00  espie
  18.  * General cleanup
  19.  *
  20.  * Revision 3.4  1992/11/23  10:12:23  espie
  21.  * *** empty log message ***
  22.  *
  23.  * Revision 3.3  1992/11/22  17:20:01  espie
  24.  * Simplified delay_pattern.
  25.  *
  26.  * Revision 3.2  1992/11/20  14:53:32  espie
  27.  * Added finetune.
  28.  *
  29.  * Revision 3.1  1992/11/19  20:44:47  espie
  30.  * Protracker commands.
  31.  *
  32.  * Revision 3.0  1992/11/18  16:08:05  espie
  33.  * New release.
  34.  *
  35.  * Revision 2.7  1992/11/13  13:24:24  espie
  36.  * Added parameters for extended Retriger command.
  37.  * Added transpose feature.
  38.  * Structured part of the code, especially replay ``automaton''
  39.  * and setting up of effects.
  40.  *
  41.  * Revision 1.5  1991/11/16  16:54:19  espie
  42.  * Bug correction: when doing arpeggio, there might not
  43.  * be a new note, so we have to save the old note value
  44.  * and do the arppeggio on that note.
  45.  * Added fields for arpeggio.
  46.  */
  47.  
  48.      
  49. #ifndef NUMBER_PATTERNS
  50. #define NUMBER_PATTERNS 128
  51. #endif
  52.  
  53. #define MAX_ARP 3
  54.      
  55. /* there is no note in each channel initially.
  56.  * This is defensive programming, because some
  57.  * commands rely on the previous note. Checking
  58.  * that there was no previous note is a way to
  59.  * detect faulty modules.
  60.  */
  61. #define NO_NOTE 255
  62.  
  63. struct channel
  64.     {
  65.     struct sample_info *samp;
  66.     struct audio_channel *audio;
  67.     int finetune;
  68.     int volume;             /* current volume of the sample (0-64) */
  69.     int pitch;              /* current pitch of the sample */
  70.     int note;               /* we have to save the note cause */
  71.                             /* we can do an arpeggio without a new note */
  72.     
  73.     int arp[MAX_ARP];       /* the three pitch values for an arpeggio */
  74.     int arpindex;           /* an index to know which note the arpeggio is doing
  75.                              */
  76.  
  77.     int viboffset;          /* current offset for vibrato (if any) */
  78.     int vibdepth;           /* depth of vibrato (if any) */
  79.  
  80.     int slide;              /* step size of pitch slide */
  81.  
  82.     int pitchgoal;          /* pitch to slide to */
  83.     int pitchrate;          /* step rate for portamento */
  84.  
  85.     int volumerate;         /* step rate for volume slide */
  86.  
  87.     int vibrate;            /* step rate for vibrato */
  88.  
  89.     int retrig;             /* delay for extended retrig command */
  90.     int current;
  91.  
  92.     void (*adjust)();       /* current command to adjust parameters */
  93.     };
  94.  
  95. #define DO_NOTHING 0 
  96. #define SET_SPEED 1
  97. #define SET_SKIP 2
  98. #define SET_FASTSKIP 4
  99. #define SET_FINESPEED 32
  100.  
  101. #define JUMP_PATTERN 8
  102. #define DELAY_PATTERN 16
  103.  
  104. #define NORMAL_SPEED 6
  105. #define NORMAL_FINESPEED 125
  106.  
  107. struct automaton
  108.     {
  109.     int pattern_num;            /* the pattern in the song */
  110.     int note_num;               /* the note in the pattern */
  111.     struct block *pattern;      /* the physical pattern */
  112.     struct song_info *info;     /* we need the song_info */
  113.  
  114.     char gonethrough[NUMBER_PATTERNS + 1];  /* to check for repeats */
  115.  
  116.     int counter;                /* the fine position inside the effect */
  117.     int speed;                  /* the `speed', number of effect repeats */
  118.     int finespeed;              /* the finespeed, base is 100 */
  119.  
  120.     int do_stuff;               /* keeping some stuff to do */
  121.                                 /* ... and parameters for it: */
  122.     int new_speed, new_note, new_pattern, new_finespeed;
  123.  
  124.     int pitch, note, para;      /* some extra parameters effects need */
  125.  
  126.     int loop_note_num, loop_counter;
  127.                                 /* for command E6 */
  128.     };
  129.